home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / tools / activate next >
Text File  |  2008-11-21  |  2KB  |  80 lines

  1. #!/bin/bash
  2. # Activate a module, while running LiveCD.
  3. # Include it into live directory structure on the fly
  4. #
  5. # Author: Tomas M. <http://www.linux-live.org>
  6.  
  7. if [ "$1" = "-k" ]; then
  8.    CALLED_BY_KDE_HELPER=1
  9.    shift
  10. fi
  11.  
  12. if [ -e /usr/bin/kactivate -a "$DISPLAY" -a ! "$CALLED_BY_KDE_HELPER" ]; then
  13.    exec /usr/bin/kactivate "$@" 2>/dev/null
  14. fi
  15.  
  16. MODULE=$(readlink -f "$1")
  17.  
  18. if [ "$MODULE" = "" -o ! -e "$MODULE" -o -d "$MODULE" ]; then
  19.    echo
  20.    echo "Activate a module on the fly while running Linux Live"
  21.    echo "Usage: $0 module.lzm"
  22.    exit 1
  23. fi
  24.  
  25. if [ "$(echo $MODULE | fgrep -i .lzm)" = "" ]; then
  26.    echo
  27.    echo "$(basename $MODULE): Module must end with .lzm"
  28.    exit 2
  29. fi
  30.  
  31. PATH=.:$(dirname $0):/usr/lib:$PATH
  32. . liblinuxlive || exit 3
  33.  
  34. allow_only_root
  35. IMAGES=/mnt/live/memory/images
  36. MODULES=/mnt/live/memory/modules
  37.  
  38. # are we even using union?
  39. if [ "$(grep '^aufs / ' /proc/mounts)" = "" ]; then
  40.    echo "not in the live mode, can't continue. Try lzm2dir $MODULE /"
  41.    exit 4
  42. fi
  43.  
  44. mkdir -p "$MODULES"
  45.  
  46. # Test whether the module file is stored in union
  47. # if yes, then we must move it somewhere else (to RAM) else it can't be added
  48. if [ -e "/mnt/live/memory/changes/$(readlink -f "$MODULE")" ]; then
  49.    echo "module file is stored inside the union, moving to $MODULES first..."
  50.    TARGET="$MODULES/$(basename "$MODULE")"
  51.    mv "$MODULE" "$TARGET"
  52.    if [ $? -ne 0 ]; then
  53.       echo "error copying module to memory, not enough free RAM? try df" >&2
  54.       rm "$TARGET"
  55.       exit 6
  56.    fi
  57.    MODULE="$TARGET"
  58. fi
  59.  
  60. MOD=$(union_insert_module / "$MODULE" $IMAGES)
  61. if [ $? -ne 0 ]; then echo "error inserting module to live filesystem" >&2; exit 3; fi
  62.  
  63. # All executables (but symlinks) in /etc/rc.d/init.d/ from this module will be started
  64. # with two arguments: "start" "activate".
  65. # This is done only by the 'activate' script, not in the case when the module is loaded 
  66. # during OS startup (in that case, your distro is responsible for execution)
  67. #
  68. # For compatibility, /etc/init.d is also examined, but it's not recommended for you to put your startup scripts
  69. # there in your module
  70.  
  71. MOD="$IMAGES/$(basename $MOD)"
  72.  
  73. find_n_run_scripts $MOD start activate
  74.  
  75. # update ld cache if new ld.so.conf/cache exists in the module
  76. if [ -e "$MOD/etc/ld.so.conf" -o -e "$MOD/etc/ld.so.cache" ]; then
  77.    echo "Module contains ld.so.conf or ld.so.cache, updating libs cache..."
  78.    /sbin/ldconfig
  79. fi
  80.